package com.itjeffrey.autocode.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itjeffrey.autocode.common.ACContext;
import com.itjeffrey.autocode.common.BaseCommon;
import com.itjeffrey.autocode.constant.SysConstant;
import com.itjeffrey.autocode.entity.DbConnTbEntity;
import com.itjeffrey.autocode.mapper.DbConnTbMapper;
import com.itjeffrey.autocode.service.DbConnTbService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.Objects;

/**
 * 服务实现类
 *
 * @author: admin
 * @date: 2021-06-10 00:48:05
 */
@Service
public class DbConnTbServiceImpl extends ServiceImpl<DbConnTbMapper, DbConnTbEntity> implements DbConnTbService {

    @Resource
    private DbConnTbMapper dbConnTbMapper;

    @Override
    public void addDbConnTb(String dbName) {
        DbConnTbEntity dbConnTbEntity = dbConnTbMapper.selectOne(new LambdaQueryWrapper<DbConnTbEntity>().eq
                (StringUtils.isNotBlank(dbName),
                DbConnTbEntity::getDbName, dbName));
        //exists, update
        if(Objects.nonNull(dbConnTbEntity)){
            dbConnTbEntity.setConnCount(dbConnTbEntity.getConnCount() + 1);
            dbConnTbEntity.setConnSts(SysConstant.DB_CONN_STS_1);
            dbConnTbEntity.setConnTime(new Date());
            dbConnTbEntity.setUpdateTime(new Date());
            dbConnTbEntity.setUpdateUser(ACContext.getUserContext().getUsername());
            dbConnTbMapper.updateById(dbConnTbEntity);
//            }
        } else {
            //not exists, insert
            DbConnTbEntity entity = new DbConnTbEntity();
            entity.setConnCount(1);
            entity.setConnSts(SysConstant.DB_CONN_STS_1);
            entity.setConnTime(new Date());
            entity.setDbName(dbName);
            entity.setCreateTime(new Date());
            entity.setCreateUser(ACContext.getUserContext().getUsername());
            dbConnTbMapper.insert(entity);
        }
    }
}